package unq.o3.tp0

class Juego(ROBOTS : Array[Robot], CANT_DE_TURNOS : Int) {
	if(ROBOTS.length != 2){
		error("El juego debe tener solo 2 robots")
	}
	
	def robotsConEnergia() : Boolean = {
		var conEnergia = true;
		
		for(i <- 0 until this.ROBOTS.length) {		//ver si se puede evitar recorrer toda la lista
													//ya que con encontrar uno con false me alcanza
			conEnergia &= this.ROBOTS(i).getEnergia() > 0;
		}
		
		return conEnergia;
	}
	
	def robotGanador() : Int = {
		var indexGanador = -1;
		
		if(this.ROBOTS(0).getEnergia() > this.ROBOTS(1).getEnergia()){
			indexGanador = 0;
		}
		for(i <- 1 until this.ROBOTS.length){
			if(this.ROBOTS(i).getEnergia() > this.ROBOTS(i-1).getEnergia()){
				indexGanador = i;
			}
		}
		
		return indexGanador+1;
	}
	
	def iniciarSimulacion() = {
		
//		for(int i=1; i<=this.CANT_DE_TURNOS && this.robotsConEnergia(); i++)
		for(i <- 1 until this.CANT_DE_TURNOS+1) {
			if(this.robotsConEnergia()) {
				println("Turno n°" + i + ":");
//				for(int j=0; j<this.getRobots().length-1; j++)
				for(j <- 0 until this.ROBOTS.length-1) {
					println("Robot " + (j+1) + " contra robot " + (j+2));
					this.ROBOTS(j).ejecutarTurno(i, this.ROBOTS(j+1));
				}
				println("Robot " + this.ROBOTS.length + " contra robot 1");
				this.ROBOTS(this.ROBOTS.length -1).ejecutarTurno(i, this.ROBOTS(0));
			}
		}
		var ganador = this.robotGanador();
		if(ganador != 0){
			println("El robot ganador es el numero " + ganador);
		}else{
			println("Empate");
		}
	}

}